home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 16
/
Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso
/
Aminet
/
util
/
boot
/
MemPatch.lha
/
mempatch.e
< prev
Wrap
Text File
|
1992-09-03
|
2KB
|
80 lines
OBJECT memi
task, size, type, ret
ENDOBJECT
MODULE 'exec/nodes','exec/memory'
DEF list[256]:ARRAY OF memi, oldptr, task, size, type, ret, missed
CONST MIN=128 -> allocs < 128 bytes are not written (efficiency!)
PROC main()
DEF mem:PTR TO memi,cnt
LEA globvec(PC),A3; MOVE.L A4,(A3) -> this is the global variables ptr
SetTaskPri(FindTask(NIL),-40)
WriteF('MemPatch v1.0 by Kyzer/CSG. Press CTRL-C to end.\n\s\n\s\n',
'Taskname | Size wanted | Flags | Result',
'------------------------------|-----------------|---------|----------')
FOR cnt:=0 TO 255 DO list[cnt].task:=0
oldptr:=SetFunction(execbase,-198,{patch})
WHILE CtrlC()=0
Delay(1)
IF missed
WriteF('Missed \d allocations\n',missed)
missed:=0
ENDIF
FOR cnt:=0 TO 255
mem:=list[cnt]
IF mem.task
WriteF('\l\s[30]| \d[16]| \s\s\s\s\s\s\s | $\h\n',
(IF mem.task::ln.name THEN mem.task::ln.name ELSE 'no valid name'),
mem.size,
(IF mem.type AND MEMF_PUBLIC THEN 'P' ELSE '-'),
(IF mem.type AND MEMF_CHIP THEN 'C' ELSE '-'),
(IF mem.type AND MEMF_FAST THEN 'F' ELSE '-'),
(IF mem.type AND MEMF_LOCAL THEN 'L' ELSE '-'),
(IF mem.type AND MEMF_24BITDMA THEN 'D' ELSE '-'),
(IF mem.type AND MEMF_CLEAR THEN 'X' ELSE '-'),
(IF mem.type AND MEMF_REVERSE THEN 'R' ELSE '-'),
mem.ret)
mem.task:=0
ENDIF
ENDFOR
ENDWHILE
WriteF('Finished.\n')
SetFunction(execbase,-198,oldptr)
ENDPROC
patch:
MOVEM.L D1-D7/A0-A6,-(A7)
LEA globvec(PC),A3
MOVE.L (A3),A4
MOVE.L 276(A6),task
MOVE.L D0,size
MOVE.L D1,type
MOVE.L oldptr,A3
JSR (A3)
MOVE.L D0,ret
CMP.L #MIN,size
BLS.S noput
MOVE.L list,A3
MOVE.L #255,D1
loop:
TST.L (A3)
BEQ.S put
ADD.L #SIZEOF memi,A3
DBRA D1,loop
ADD.L #1,missed
BRA.S noput
put:
MOVE.L task,(A3)+
MOVE.L size,(A3)+
MOVE.L type,(A3)+
MOVE.L ret, (A3)
noput:
MOVE.L ret,D0
MOVEM.L (A7)+,D1-D7/A0-A6
RTS
globvec: LONG 0